﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BussinessLogicTecnoPez;
using BussinessLogicTecnoPez.Produccion.Clasificacion_e_Incubacion;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using WebChart;
using System.Drawing;

public partial class Modules_EnfermedadesControlEstanque_BaseConocimientosTratamientos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Globals_GenericMasterPageNoSecurity master = (Globals_GenericMasterPageNoSecurity)this.Master;
        master.Imagen = "../Styles/Icons/tools.png";
        master.Titulo = "Consulta de tratamientos con mejores resultados";
        _lblError.Text = "";

        TPPEnfermedad.ObjType = typeof(Enfermedad);
        TPPParametro.ObjType = typeof(ParametroControl);

        if (!IsPostBack)
        {
            filaEnfermedad.Visible = true;
            TPPEnfermedad.TecnoPezActivateValidation = true;
            FilaParametro.Visible = false;
            TPPParametro.TecnoPezActivateValidation = false;
            divresultados.Visible = false;

            TPCFechaDesde.Text = (DateTime.Now.AddDays(-30)).ToShortDateString();
            TPCFechaHasta.Text = DateTime.Now.ToShortDateString();
        }


    }
    protected void cmdBuscar_Click(object sender, EventArgs e)
    {
        DateTime fechaDesde;
        if(DateTime.TryParse(TPCFechaDesde.Text, out fechaDesde)==false)
        {
            _lblError.Text="Fecha desde es incorrecta";
        }
        DateTime fechaHasta;
        
        if (DateTime.TryParse(TPCFechaHasta.Text, out fechaHasta) == false)
        {
            _lblError.Text = "Fecha hasta es incorrecta";
        }

        if (rdbTipo.SelectedValue == "0")
        {
            DataView datos=Tratamiento.ConsultarTratamientosRapidos(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDTratamientosRapidos.DataSource= datos;//Tratamiento.ConsultarTratamientosRapidos(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDTratamientosRapidos.DataBind();
            Graficar(ChartControlRapidos, "DESCRIPCION", "DIFERENCIA", datos);

            datos = Tratamiento.ConsultarTratamientosTasaMortalidad(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDTasaMortalidad.DataSource = datos;//Tratamiento.ConsultarTratamientosTasaMortalidad(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDTasaMortalidad.DataBind();
            Graficar(ChartControlMortalidad, "DESCRIPCION", "MORTALIDAD", datos);

            datos = Tratamiento.ConsultarTratamientosMejorRendimiento(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDMejorRendimiento.DataSource = datos;//Tratamiento.ConsultarTratamientosMejorRendimiento(null, (TPPEnfermedad.ItemSelected as Enfermedad).IdEnfermedad, fechaDesde, fechaHasta);
            TPDMejorRendimiento.DataBind();
            Graficar(ChartControlRendimiento, "DESCRIPCION", "RENDIMIENTO", datos);
        }
        else
        {
            TPDTratamientosRapidos.DataSource= Tratamiento.ConsultarTratamientosRapidos((TPPParametro.ItemSelected as ParametroControl).IdParametroControl, null, fechaDesde, fechaHasta);
            TPDTratamientosRapidos.DataBind();

            TPDTasaMortalidad.DataSource = Tratamiento.ConsultarTratamientosTasaMortalidad((TPPParametro.ItemSelected as ParametroControl).IdParametroControl, null, fechaDesde, fechaHasta);
            TPDTasaMortalidad.DataBind();

            TPDMejorRendimiento.DataSource = Tratamiento.ConsultarTratamientosMejorRendimiento((TPPParametro.ItemSelected as ParametroControl).IdParametroControl, null, fechaDesde, fechaHasta);
            TPDMejorRendimiento.DataBind();
        }
        divresultados.Visible = true;
    }
    protected void rdbTipo_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (rdbTipo.SelectedValue == "0")
        {
            filaEnfermedad.Visible = true;
            TPPEnfermedad.TecnoPezActivateValidation = true;
            FilaParametro.Visible = false;
            TPPParametro.TecnoPezActivateValidation = false;
            
        }
        else
        {
            filaEnfermedad.Visible = false;
            TPPEnfermedad.TecnoPezActivateValidation = false;
            FilaParametro.Visible = true;
            TPPParametro.TecnoPezActivateValidation = true;
        }
    }
    protected void TPDTratamientosRapidos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "vertratamiento")
        {
            Int32 indice = Convert.ToInt32(e.CommandArgument);
            string id = TPDTratamientosRapidos.DataKeys[indice].Value.ToString();
            Session["banderaDetalleTratamiento"] = "t";
            Response.Redirect("RegistrarTratamiento.aspx?idTratamiento=" + id);
        }
    }

    private void Graficar(ChartControl grafico, string axisX, string axisY, DataView datos)
    {
        WebChart.ColumnChart chart1 = new ColumnChart();
        chart1.Line.Color = Color.Blue;
        chart1.Fill.Color = Color.Blue;
        chart1.LineMarker = new DiamondLineMarker(8, Color.Blue, Color.Yellow);
        chart1.Legend = axisY;

        for (int i=0; i<datos.Table.Rows.Count ;i++)
        {
            chart1.Data.Add(new ChartPoint(Convert.ToString(datos.Table.Rows[i][axisX]), (float)Convert.ToDouble( datos.Table.Rows[i][axisY])));
            chart1.Data.Add(new ChartPoint("", 0));
        }

        grafico.Charts.Clear();
        grafico.Charts.Add(chart1);


        ConfigureColors(grafico);
        grafico.RedrawChart();

    }

    private void ConfigureColors(ChartControl ChartControlToSetup)
    {
        ChartControlToSetup.Background.Color = Color.White;//Color.FromArgb(75, Color.SteelBlue);
        ChartControlToSetup.Background.Type = InteriorType.LinearGradient;
        ChartControlToSetup.Background.ForeColor = Color.SteelBlue;
        ChartControlToSetup.Background.EndPoint = new Point(500, 350);
        ChartControlToSetup.Legend.Position = LegendPosition.Bottom;
        ChartControlToSetup.Legend.Width = 40;

        ChartControlToSetup.YAxisFont.ForeColor = Color.SteelBlue;
        ChartControlToSetup.XAxisFont.ForeColor = Color.SteelBlue;
        //ChartControlToSetup.XAxisFont.Font.Size = 5; 

        ChartControlToSetup.ChartTitle.ForeColor = Color.White;

        ChartControlToSetup.Border.Color = Color.SteelBlue;
        ChartControlToSetup.BorderStyle = BorderStyle.None;

    }
    protected void TPDTasaMortalidad_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "vertratamiento")
        {
            Int32 indice = Convert.ToInt32(e.CommandArgument);
            string id = TPDTasaMortalidad.DataKeys[indice].Value.ToString();
            Session["banderaDetalleTratamiento"] = "t";
            Response.Redirect("RegistrarTratamiento.aspx?idTratamiento=" + id);
        }
    }
    protected void TPDMejorRendimiento_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "vertratamiento")
        {
            Int32 indice = Convert.ToInt32(e.CommandArgument);
            string id = TPDMejorRendimiento.DataKeys[indice].Value.ToString();
            Session["banderaDetalleTratamiento"] = "t";
            Response.Redirect("RegistrarTratamiento.aspx?idTratamiento=" + id);
        }
    }
}
